home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / reviewed / volume01 / mawk / 1.1 / patch02c < prev    next >
Encoding:
Internet Message Format  |  1992-10-13  |  60.0 KB

  1. From: Mike Brennan <brennan@boeing.com>
  2. Subject: v02i030: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02c/4
  3. Newsgroups: comp.sources.reviewed
  4. Approved: csr@calvin.dgbt.doc.ca
  5.  
  6. Submitted-by: Mike Brennan <brennan@boeing.com>
  7. Posting-number: Volume 2, Issue 30
  8. Archive-name: mawk/patch02c
  9. Patch-To: mawk: Volume 1, Issue 50-68
  10.  
  11. #!/bin/sh
  12. # this is part.03 (part 3 of a multipart archive)
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file Xparse.c continued
  15. #
  16. if test ! -r _shar_seq_.tmp; then
  17.     echo 'Please unpack part 1 first!'
  18.     exit 1
  19. fi
  20. (read Scheck
  21.  if test "$Scheck" != 3; then
  22.     echo Please unpack part "$Scheck" next!
  23.     exit 1
  24.  else
  25.     exit 0
  26.  fi
  27. ) < _shar_seq_.tmp || exit 1
  28. if test ! -f _shar_wnt_.tmp; then
  29.     echo 'x - still skipping Xparse.c'
  30. else
  31. echo 'x - continuing file Xparse.c'
  32. sed 's/^X//' << 'SHAR_EOF' >> 'Xparse.c' &&
  33. X 2273, 2273, 2273, -167,  116, 2243, 2243, 2243, 2243, 2243,
  34. X  -65, 2243, 2273,    0,    0, 2273,    0,  -78,    0,    0,
  35. X    0,    0,  -50,    0,    0, 2273, 1820,    0,    0, 2273,
  36. X    0, 2499,    0,    0, 2499,    0, -196,    0,    0,    0,
  37. X    0,  -72,    0, 2511, 2183,    0, 2303,  -61, 2406,   -4,
  38. X  -41,    3,   23, 2273,    6,    0, 2273,    0, 2273,  -13,
  39. X    0, 2333, 2273, 2568, 2589,    0,    0, 2613, 2613, 2613,
  40. X 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613,
  41. X 2613, 2273, 2273, 2273, 2273,    0,  -95,    0,    0,    0,
  42. X    0,    0,    0,    0,    0,    0,  -28,  -28, -211, -211,
  43. X -211,  -26, -120, 2418, 2613,   25,    0,   -9,   29,    0,
  44. X 2433,    0, -276, 2526, 2445,   32,    0,    0,    0,  352,
  45. X    0,    0, 2460,  352, 2213,   31, 2613,    0,   33,    2,
  46. X 2273, 2273, 2273, 2613,    4, 2613, -108,    0, -221, 2120,
  47. X    0,    5,    7, 2273, 2613, 2601, 2622,  198,    0,    0,
  48. X 2273,    0,    8,    0,   10,    0,    0, 2273,    0,    0,
  49. X    0,    0, -218, 2273, -196, 2273, 2273,  -83,  -48,  -31,
  50. X    0,   14,    0,    0,    0,    0,    0,    0,   18, -167,
  51. X    0, 2147,    0,   24,  -17,    6, 2613,    0, 2613, 2472,
  52. X   14,    0,    0,    0,    0,    0, 2273,  -26,    0,    0,
  53. X    0, -196, -196, 2613,   28,    0,    0,    0,
  54. };
  55. short yyrindex[] = {                                      0,
  56. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  57. X    0,    0,    0,  597,    0,    0,    0,    0,    0,    0,
  58. X    0,    0,    0,    0,    0,    0,    0,    0,    0, 1583,
  59. X  -98, 1978, 1641,    0,    0,    0,    0,    0,    0,    0,
  60. X    0, 1409,    0,    0,    0,    0,    0,    0,    0,    0,
  61. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  62. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  63. X  539,  655,  887,  945, 1003,    0,  423,    0,    0,  481,
  64. X    0,    0, 1920,    0,    0,    0,    0,    0,    0,    0,
  65. X    0,    0,    0,    0,    0, 1061,    0,    0,    0,    0,
  66. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  67. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  68. X    0,    0,    0,    0, 1699,    0,    0,    0,    0,    0,
  69. X    0,    0,    0,    0,    0,    0,    0,   30,    0,    0,
  70. X    0,    0,  713,    0,    0,    0,    0,    0,    0,    0,
  71. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  72. X    0,  204,    0,    0,    0,    0, -192,    0,    0,    0,
  73. X    0,    0,    0,    0,    0,    0,    0,    0,    0, 2363,
  74. X    0,    0,   45,    0,    0,    0,    0,   17,   40,  135,
  75. X  209,  283,  357, 2006, 2018, 2026, 2038, 2046, 2058, 2066,
  76. X 2078,    0,    0,    0,    0,    0,  -67,    0,    0,    0,
  77. X    0,    0,    0,    0,    0,    0, 1467, 1525, 1119, 1177,
  78. X 1235, 1351,  771,    0, -185,    0,    0,    0,   50,    0,
  79. X    0,    0, 1786,    0,    0,    0,    0,    0,    0,    0,
  80. X    0,    0,    0,    0,    0,  -10, -205,    0, -223,    0,
  81. X    0,    0,    0, -170,    0, -169,    0,    0, 1874,    0,
  82. X    0,    0,    0,    0,  -59,    0, -236,  -35,    0,    0,
  83. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  84. X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  85. X    0, 1293,    0,    0,    0,    0,    0,    0,    0,    0,
  86. X    0,    0,    0,    0,    0, -177,   11,    0,  -46,    0,
  87. X  829,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  88. X    0,    0,    0, 2086,    0,    0,    0,    0,
  89. };
  90. short yygindex[] = {                                      0,
  91. X   21,    9,    0,  -49,   72,    0,   57,    0,    0,   -7,
  92. X   -1, -188,    1,    0,   44,    0,    0,    0,    0,    0,
  93. X    0,    0,   61,    0,  125, -137,    0,    0,    0,    0,
  94. X    0,    0,    0,    0,    0,  302,    0,    0,    0,    0,
  95. X    0,    0,    0,    0,  103,    0,    0,    0,    0,    0,
  96. X    0,    0,    0,    0,    0,
  97. };
  98. #define YYTABLESIZE 2907
  99. short yytable[] = {                                      78,
  100. X   31,  275,   72,   72,   72,   79,   72,  133,   83,  159,
  101. X   84,   85,  161,  162,    2,  166,    8,    9,   76,  168,
  102. X   26,   85,   48,   48,   48,   31,   72,   48,   48,   48,
  103. X   72,   89,  174,  269,  141,   77,   77,   48,   48,   48,
  104. X  142,  257,   77,  293,  134,   26,  174,   73,   74,   75,
  105. X   93,   81,   94,   78,   78,  152,  137,  155,   78,   78,
  106. X   78,  139,   44,   45,  164,   48,   76,   76,   83,  175,
  107. X  169,   96,   90,   76,  171,  125,   85,  111,   77,  134,
  108. X  294,   87,   87,  306,  131,  132,   87,   88,   87,  184,
  109. X  185,   44,   45,    2,   90,   89,   78,  188,  189,  190,
  110. X  191,  192,  193,  194,  195,  196,  197,  198,  199,  200,
  111. X  201,  186,  187,  288,  289,  290,  134,  207,  208,  209,
  112. X  210,  211,  212,  213,   72,   72,   72,   72,   72,  325,
  113. X   72,   90,   89,  224,   44,   45,  225,  144,  167,  136,
  114. X  305,  138,  170,  146,  214,  145,  231,  234,  172,  147,
  115. X  235,  173,  150,  148,  149,  292,  286,  153,  154,  156,
  116. X   11,   11,   11,  160,  151,  243,  179,  247,  180,  217,
  117. X  218,  219,  220,  221,  254,  223,  132,  256,  183,  247,
  118. X  311,  286,  260,  247,  118,  119,  120,  121,  122,  123,
  119. X  279,   46,   46,   46,  281,  206,   46,   46,   46,   14,
  120. X   14,   14,  265,  266,  267,  268,   46,   46,   46,   46,
  121. X   46,   46,   79,   79,  141,  312,  286,   79,   79,   79,
  122. X  142,  222,  236,   50,   50,   50,  216,  227,   50,   50,
  123. X   50,  140,  313,  286,   46,    8,    9,   76,   50,   50,
  124. X   50,   50,   77,   83,  230,   84,  322,  286,   91,   91,
  125. X  239,  247,  247,  247,  237,   79,  250,  238,  251,  145,
  126. X  176,  128,  129,  130,  225,  252,   50,  131,  132,   92,
  127. X   92,  302,    8,    9,   76,   33,   33,   33,  247,   77,
  128. X   33,   33,   33,  255,  307,  253,  309,  310,  258,  271,
  129. X    1,   33,  272,  273,  278,    2,  284,  286,   34,   34,
  130. X   34,  283,  287,   34,   34,   34,  297,  262,  316,  291,
  131. X  141,  314,  298,  303,   34,  304,  142,  324,   33,  315,
  132. X  214,    3,    4,    5,  299,  321,   95,    6,  163,  328,
  133. X    0,  158,    7,    8,    9,   10,    0,   11,   12,   13,
  134. X   14,   34,   15,   16,   17,    0,   76,   18,   19,   20,
  135. X   21,  159,    0,    0,    0,    3,    4,    5,    0,   22,
  136. X   23,    6,    0,    0,   24,    0,    7,    8,    9,   10,
  137. X    0,   11,   12,   13,   14,    0,   15,   16,   17,    0,
  138. X    0,   18,   19,   20,   21,  157,    0,  308,   44,   45,
  139. X    2,  158,    0,   35,   35,   35,    0,    0,   35,   35,
  140. X   35,    0,  216,  126,  127,  128,  129,  130,    0,   35,
  141. X    0,  131,  132,    0,    0,    0,    3,    4,    5,    0,
  142. X    0,    0,    6,    0,  326,  327,    0,    7,    8,    9,
  143. X   10,    0,   11,   12,   13,   14,   35,   15,   16,   17,
  144. X   46,   47,   18,   19,   20,   21,   48,   49,   50,   51,
  145. X   52,   53,    0,   54,    0,    0,   55,   56,   57,   94,
  146. X    0,    0,   94,   94,   94,   94,    0,   36,   36,   36,
  147. X    0,    0,   36,   36,   36,  116,  117,  118,  119,  120,
  148. X  121,  122,  123,   36,    0,    0,    0,    0,    0,    0,
  149. X   94,   94,   94,    0,    0,    0,   94,    0,    0,    0,
  150. X    0,   94,   94,   94,   94,    0,   94,   94,   94,   94,
  151. X   36,   94,   94,   94,   94,   94,   94,   94,   94,   94,
  152. X   94,   94,   94,   94,   94,   94,    0,   94,    0,    0,
  153. X   94,   94,   94,   43,    0,    0,   44,   45,    2,    0,
  154. X    0,   37,   37,   37,    0,    0,   37,   37,   37,    0,
  155. X   97,   98,   99,  100,  101,  102,  103,   37,    0,    0,
  156. X    0,    0,    0,    0,    3,    4,    5,    0,    0,    0,
  157. X    6,    0,    0,    0,    0,    7,    8,    9,   10,    0,
  158. X   11,   12,   13,   14,   37,   15,   16,   17,   46,   47,
  159. X   18,   19,   20,   21,   48,   49,   50,   51,   52,   53,
  160. X    0,   54,    0,    0,   55,   56,   57,  157,    0,    0,
  161. X   44,   45,    2,    0,    0,   38,   38,   38,    0,    0,
  162. X   38,   38,   38,    0,    0,    0,    0,    0,    0,    0,
  163. X    0,   38,    0,    0,    0,    0,    0,    0,    3,    4,
  164. X    5,    0,    0,    0,    6,    0,    0,    0,    0,    7,
  165. X    8,    9,   10,    0,   11,   12,   13,   14,   38,   15,
  166. X   16,   17,   46,   47,   18,   19,   20,   21,   48,   49,
  167. X   50,   51,   52,   53,    0,   54,    0,    0,   55,   56,
  168. X   57,   75,   75,   75,    0,   82,   75,   75,   75,   75,
  169. X   75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
  170. X   75,   75,   75,   75,   75,   75,   75,   75,    0,   75,
  171. X   75,   75,   75,   75,   75,   75,    0,   75,   75,   75,
  172. X   75,   75,   75,   75,   75,   75,   75,   75,   75,    0,
  173. X   75,   75,   75,    0,    0,   75,   75,   75,   75,  117,
  174. X  117,  117,    0,   82,  117,  117,  117,  117,  117,  117,
  175. X  117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
  176. X  117,  117,  117,  117,  117,  117,    0,  117,  117,  117,
  177. X  117,  117,  117,  117,    0,  117,  117,  117,  117,  117,
  178. X  117,  117,  117,  117,  117,  117,  117,    0,  117,  117,
  179. X  117,    0,    0,  117,  117,  117,  117,   58,   58,   58,
  180. X    0,   82,   58,   58,   58,   58,   58,   58,   58,   58,
  181. X   58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
  182. X   58,   58,   58,   58,    0,   58,   58,   58,   58,   58,
  183. X   58,   58,    0,   58,   58,   58,    0,   58,   58,   58,
  184. X   58,   58,   58,   58,   58,    0,   58,   58,   58,    0,
  185. X    0,   58,   58,   58,   58,   58,   58,   58,    0,   82,
  186. X   58,   58,   58,   75,   75,   75,   75,   75,   75,   75,
  187. X   58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
  188. X   58,   58,    0,   58,   58,   58,   58,   58,   58,   58,
  189. X    0,    0,   58,   58,    0,   58,   58,   58,   58,   58,
  190. X   58,   58,   58,    0,   58,   58,   58,    0,    0,   58,
  191. X   58,   58,   58,  121,  121,  121,    0,    0,  121,  121,
  192. X  121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
  193. X  121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
  194. X    0,  121,  121,  121,  121,  121,  121,  121,    0,  121,
  195. X  121,  121,    0,  121,  121,  121,  121,  121,  121,  121,
  196. X  121,    0,  121,  121,  121,    0,    0,  121,  121,  121,
  197. X  121,  140,  140,  140,    0,    0,  140,  140,  140,  140,
  198. X  140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
  199. X  140,  140,  140,  140,  140,  140,  140,  140,    0,  140,
  200. X  140,  140,  140,  140,  140,  140,    0,    0,  140,  140,
  201. X  140,  140,  140,  140,  140,  140,  140,  140,  140,    0,
  202. X  140,  140,  140,    0,    0,  140,  140,  140,  140,   66,
  203. X   66,   66,    0,    0,   66,   66,   66,   66,   66,   66,
  204. X   66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
  205. X   66,   66,   66,   66,   66,   66,    0,   66,   66,   66,
  206. X   66,   66,   66,   66,    0,   66,   66,    0,   66,   66,
  207. X   66,   66,   66,   66,   66,   66,   66,    0,   66,   66,
  208. X   66,    0,    0,   66,   66,   66,   66,  111,  111,  111,
  209. X    0,    0,  111,  111,  111,  111,  111,  111,  111,  111,
  210. X  111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
  211. X  111,  111,  111,  111,    0,  111,  111,  111,  111,  111,
  212. X  111,  111,    0,  111,  111,  111,    0,  111,  111,  111,
  213. X  111,  111,  111,  111,  111,    0,  111,  111,  111,    0,
  214. X    0,  111,  111,  111,  111,   68,   68,   68,    0,    0,
  215. X   68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
  216. X   68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
  217. X   68,   68,    0,   68,   68,   68,   68,   68,   68,   68,
  218. X    0,   68,    0,    0,   68,   68,   68,   68,   68,   68,
  219. X   68,   68,   68,    0,   68,   68,   68,    0,    0,   68,
  220. X   68,   68,   68,   69,   69,   69,    0,    0,   69,   69,
  221. X   69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
  222. X   69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
  223. X    0,   69,   69,   69,   69,   69,   69,   69,    0,   69,
  224. X    0,    0,   69,   69,   69,   69,   69,   69,   69,   69,
  225. X   69,    0,   69,   69,   69,    0,    0,   69,   69,   69,
  226. X   69,   67,   67,   67,    0,    0,   67,   67,   67,   67,
  227. X   67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
  228. X   67,   67,   67,   67,   67,   67,   67,   67,    0,   67,
  229. X   67,   67,   67,   67,   67,   67,    0,   67,    0,    0,
  230. X   67,   67,   67,   67,   67,   67,   67,   67,   67,    0,
  231. X   67,   67,   67,    0,    0,   67,   67,   67,   67,  141,
  232. X  141,  141,    0,    0,  141,  141,  141,  141,  141,  141,
  233. X  141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
  234. X  141,  141,  141,  141,  141,  141,    0,  141,  141,  141,
  235. X  141,  141,  141,  141,    0,  141,    0,    0,  141,  141,
  236. X  141,  141,  141,  141,  141,  141,  141,    0,  141,  141,
  237. X  141,    0,    0,  141,  141,  141,  141,   63,   63,   63,
  238. X    0,    0,   63,   63,   63,   63,   63,   63,   63,   63,
  239. X   63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
  240. X   63,   63,   63,   63,    0,   63,   63,   63,   63,   63,
  241. X   63,   63,    0,   63,    0,    0,   63,   63,   63,   63,
  242. X   63,   63,   63,   63,   63,    0,   63,   63,   63,    0,
  243. X    0,   63,   63,   63,   63,   64,   64,   64,    0,    0,
  244. X   64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
  245. X   64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
  246. X   64,   64,    0,   64,   64,   64,   64,   64,   64,   64,
  247. X    0,   64,    0,    0,   64,   64,   64,   64,   64,   64,
  248. X   64,   64,   64,    0,   64,   64,   64,    0,    0,   64,
  249. X   64,   64,   64,   65,   65,   65,    0,    0,   65,   65,
  250. X   65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
  251. X   65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
  252. X    0,   65,   65,   65,   65,   65,   65,   65,    0,   65,
  253. X    0,    0,   65,   65,   65,   65,   65,   65,   65,   65,
  254. X   65,    0,   65,   65,   65,    0,    0,   65,   65,   65,
  255. X   65,  111,  111,  111,    0,    0,  111,  111,  111,  110,
  256. X  110,  110,  110,  110,  110,  110,  111,  111,  111,  111,
  257. X  111,  111,  111,  111,  111,  111,  111,  111,    0,  111,
  258. X  111,  111,  111,  111,  111,  111,    0,    0,  111,  111,
  259. X    0,  111,  111,  111,  111,  111,  111,  111,  111,    0,
  260. X  111,  111,  111,    0,    0,  111,  111,  111,  111,  142,
  261. X  142,  142,    0,    0,  142,  142,  142,  142,  142,  142,
  262. X  142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
  263. X  142,  142,  142,  142,  142,  142,    0,  142,  142,  142,
  264. X  142,  142,  142,  142,    0,  142,  142,  142,  142,    0,
  265. X    0,    0,  142,  142,  142,  142,    0,    0,  142,  142,
  266. X  142,    0,    0,  142,  142,  142,  142,  139,  139,  139,
  267. X    0,    0,  139,  139,  139,  139,  139,  139,  139,  139,
  268. X  139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  269. X  139,  139,  139,  139,    0,  139,  139,  139,  139,  139,
  270. X  139,  139,    0,    0,  139,  139,  139,    0,    0,    0,
  271. X  139,  139,  139,  139,    0,    0,  139,  139,  139,    0,
  272. X    0,  139,  139,  139,  139,   61,   61,   61,    0,    0,
  273. X   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
  274. X   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
  275. X   61,   61,    0,   61,   61,   61,    0,    0,    0,   61,
  276. X    0,   61,    0,    0,   61,   61,   61,   61,   61,   61,
  277. X   61,   61,   61,    0,   61,   61,   61,    0,    0,   61,
  278. X   61,   61,   61,   62,   62,   62,    0,    0,   62,   62,
  279. X   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
  280. X   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
  281. X    0,   62,   62,   62,    0,    0,    0,   62,    0,   62,
  282. X    0,    0,   62,   62,   62,   62,   62,   62,   62,   62,
  283. X   62,    0,   62,   62,   62,    0,    0,   62,   62,   62,
  284. X   62,  121,  121,  121,    0,    0,  121,  121,  121,    0,
  285. X    0,    0,    0,    0,    0,    0,  121,  121,  121,  121,
  286. X  121,  121,  121,  121,  121,  121,  121,  121,    0,  121,
  287. X  121,  121,  121,  121,  121,  121,    0,    0,  121,  121,
  288. X    0,  121,  121,  121,  121,  121,  121,  121,  121,    0,
  289. X  121,  121,  121,    0,    0,  121,  121,  121,  121,   54,
  290. X   54,   54,    0,    0,   54,   54,   54,    0,    0,    0,
  291. X    0,    0,    0,    0,   54,   54,   54,   54,   54,   54,
  292. X   54,   54,   54,   54,   54,   54,    0,   54,    0,    0,
  293. X    0,    0,    0,   54,    0,    0,    0,    0,   54,   54,
  294. X   54,   54,   54,   54,   54,   54,   54,    0,   54,   54,
  295. X   54,    0,    0,   54,   54,   54,   54,   55,   55,   55,
  296. X    0,    0,   55,   55,   55,    0,    0,    0,    0,    0,
  297. X    0,    0,   55,   55,   55,   55,   55,   55,   55,   55,
  298. X   55,   55,   55,   55,    0,   55,    0,   44,   45,    0,
  299. X    0,   55,    0,    0,    0,    0,   55,   55,   55,   55,
  300. X   55,   55,   55,   55,   55,    0,   55,   55,   55,    0,
  301. X    0,   55,   55,   55,   55,    3,    4,    5,    0,    0,
  302. X    0,    6,    0,    0,    0,    0,    7,    8,    9,   10,
  303. X    0,   11,   12,   13,   14,    0,   15,   16,   17,    0,
  304. X    0,   18,   19,   20,   21,   58,    0,    0,   82,    0,
  305. X    0,    0,   75,   75,   75,   75,   75,   75,   75,   58,
  306. X    0,   58,   58,    0,   58,   58,   58,   58,   58,   58,
  307. X   58,    0,   58,   58,   58,   58,   58,   58,   58,  232,
  308. X    0,   58,   58,    0,   58,   58,   58,    0,   58,   58,
  309. X   58,   58,    0,   58,   58,   58,    0,    0,   58,   58,
  310. X   58,   58,    0,    0,    0,    0,    3,    4,    5,    0,
  311. X    0,    0,    6,    0,    0,    0,    0,    7,    8,    9,
  312. X   10,    0,   11,   12,   13,  233,    0,   15,   16,   17,
  313. X    0,    0,   18,   19,   20,   21,   82,    0,    0,    0,
  314. X   75,   75,   75,   75,   75,   75,   75,   58,    0,   58,
  315. X   58,   58,   58,   58,   58,   58,   58,   58,   58,    0,
  316. X   58,   58,   58,   58,   58,   58,   58,    0,    0,   58,
  317. X   58,    0,   58,   58,   58,    0,   58,   58,   58,   58,
  318. X    0,   58,   58,   58,  121,    0,   58,   58,   58,   58,
  319. X    0,    0,    0,  121,    0,  121,  121,  121,  121,  121,
  320. X  121,  121,  121,  121,  121,    0,  121,  121,  121,  121,
  321. X  121,  121,  121,    0,    0,  121,  121,    0,  121,  121,
  322. X  121,    0,  121,  121,  121,  121,    0,  121,  121,  121,
  323. X    0,    0,  121,  121,  121,  121,   32,   32,   32,    0,
  324. X    0,   32,   32,   32,    0,    0,    0,    0,    0,    0,
  325. X    0,   32,   32,   32,   32,   32,   32,   32,   32,   32,
  326. X   32,   32,   32,    0,   39,   39,   39,    0,    0,   39,
  327. X   39,   39,    0,    0,    0,    0,  122,  122,  122,   32,
  328. X   39,  122,  122,  122,  123,  123,  123,    0,    0,  123,
  329. X  123,  123,  122,    0,    0,    0,  124,  124,  124,    0,
  330. X  123,  124,  124,  124,  125,  125,  125,   39,    0,  125,
  331. X  125,  125,  124,    0,    0,    0,  126,  126,  126,  122,
  332. X  125,  126,  126,  126,  127,  127,  127,  123,    0,  127,
  333. X  127,  127,  126,    0,    0,    0,  128,  128,  128,  124,
  334. X  127,  128,  128,  128,   53,   53,   53,  125,    0,   53,
  335. X   53,   53,  128,    0,    0,    0,    0,  177,    0,  126,
  336. X   53,    0,    0,    0,    0,    0,  113,  127,  114,  115,
  337. X  116,  117,  118,  119,  120,  121,  122,  123,    0,  128,
  338. X    0,    0,    0,    0,  295,    0,    0,   53,    0,    0,
  339. X    0,    0,    0,  113,  178,  114,  115,  116,  117,  118,
  340. X  119,  120,  121,  122,  123,    0,    0,    0,    0,    0,
  341. X    0,  318,  104,  105,  106,  107,  108,  109,  110,    0,
  342. X  113,  296,  114,  115,  116,  117,  118,  119,  120,  121,
  343. X  122,  123,  104,  105,  106,  107,  108,  109,  110,    3,
  344. X    4,    5,    0,  111,    0,    6,    0,  176,  319,    0,
  345. X    7,    8,    9,   70,    0,   11,   12,   13,   71,   80,
  346. X   15,   16,   17,  111,    0,   18,   19,   20,   21,    3,
  347. X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
  348. X    7,    8,    9,   10,  242,   11,   12,   13,   14,    0,
  349. X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
  350. X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
  351. X    7,    8,    9,   10,  282,   11,   12,   13,   14,    0,
  352. X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
  353. X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
  354. X    7,    8,    9,   70,    0,   11,   12,   13,   71,    0,
  355. X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
  356. X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
  357. X    7,    8,    9,   10,    0,   11,   12,   13,   14,    0,
  358. X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
  359. X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
  360. X    7,    8,    9,  245,    0,   11,   12,   13,   14,    0,
  361. X   15,   16,   17,    0,    0,   18,   19,   20,   21,    3,
  362. X    4,    5,    0,    0,    0,    6,    0,    0,    0,    0,
  363. X    7,    8,    9,   10,    0,   11,   12,   13,  259,    0,
  364. X   15,   16,   17,    0,    0,   18,   19,   20,   21,  166,
  365. X  166,  166,    0,    0,    0,  166,    0,    0,    0,    0,
  366. X  166,  166,  166,  166,    0,  166,  166,  166,  166,    0,
  367. X  166,  166,  166,    0,    0,  166,  166,  166,  166,  113,
  368. X    0,  114,  115,  116,  117,  118,  119,  120,  121,  122,
  369. X  123,  113,    0,  114,  115,  116,  117,  118,  119,  120,
  370. X  121,  122,  123,    0,    0,    0,  113,  178,  114,  115,
  371. X  116,  117,  118,  119,  120,  121,  122,  123,  113,  270,
  372. X  114,  115,  116,  117,  118,  119,  120,  121,  122,  123,
  373. X    0,    0,    0,  113,  274,  114,  115,  116,  117,  118,
  374. X  119,  120,  121,  122,  123,  113,  277,  114,  115,  116,
  375. X  117,  118,  119,  120,  121,  122,  123,   44,   45,    0,
  376. X    0,  280,    0,    0,    0,    0,    0,    0,    0,    0,
  377. X  241,    0,  113,  323,  114,  115,  116,  117,  118,  119,
  378. X  120,  121,  122,  123,  113,  276,  114,  115,  116,  117,
  379. X  118,  119,  120,  121,  122,  123,    0,    0,    0,  113,
  380. X    0,  114,  115,  116,  117,  118,  119,  120,  121,  122,
  381. X  123,  112,    0,    0,    0,    0,    0,    0,    0,    0,
  382. X  113,    0,  114,  115,  116,  117,  118,  119,  120,  121,
  383. X  122,  123,  263,    0,    0,    0,    0,    0,    0,    0,
  384. X    0,  113,    0,  114,  115,  116,  117,  118,  119,  120,
  385. X  121,  122,  123,  264,    0,    0,    0,    0,    0,    0,
  386. X    0,    0,  113,    0,  114,  115,  116,  117,  118,  119,
  387. X  120,  121,  122,  123,  113,  301,  114,  115,  116,  117,
  388. X  118,  119,  120,  121,  122,  123,  113,    0,  114,  115,
  389. X  116,  117,  118,  119,  120,  121,  122,  123,  115,  116,
  390. X  117,  118,  119,  120,  121,  122,  123,
  391. };
  392. short yycheck[] = {                                       7,
  393. X    0,  278,    4,    5,    6,    7,    8,  265,   10,   59,
  394. X   10,  298,   62,   63,  261,   65,  299,  300,  301,   69,
  395. X    0,  298,  259,  260,  261,   25,   28,  264,  265,  266,
  396. X   32,  301,  265,  222,   42,  259,  260,  274,  275,  276,
  397. X   42,  179,  266,  265,  302,   25,  265,    4,    5,    6,
  398. X  306,    8,  308,  259,  260,   55,   36,   57,  264,  265,
  399. X  266,   41,  259,  260,   64,  302,  259,  260,   70,  302,
  400. X   70,   28,  301,  266,   76,   32,  298,  298,  302,  265,
  401. X  302,  259,  260,  302,  296,  297,   15,   16,  266,   89,
  402. X   90,  259,  260,  261,  265,  265,  302,   97,   98,   99,
  403. X  100,  101,  102,  103,  104,  105,  106,  107,  108,  109,
  404. X  110,   91,   92,  251,  252,  253,  302,  117,  118,  119,
  405. X  120,  121,  122,  123,  126,  127,  128,  129,  130,  318,
  406. X  132,  302,  302,  133,  259,  260,  136,  262,   67,  301,
  407. X  278,  301,   71,  301,  124,   43,  146,  147,   77,  301,
  408. X  150,   80,  301,   51,   52,  264,  265,   55,   56,   57,
  409. X  259,  260,  261,   61,  306,  165,  263,  167,  301,  126,
  410. X  127,  128,  129,  130,  174,  132,  297,  177,  301,  179,
  411. X  264,  265,  182,  183,  280,  281,  282,  283,  284,  285,
  412. X  240,  259,  260,  261,  244,  306,  264,  265,  266,  259,
  413. X  260,  261,  202,  203,  204,  205,  274,  275,  276,  277,
  414. X  278,  279,  259,  260,  222,  264,  265,  264,  265,  266,
  415. X  222,  287,  151,  259,  260,  261,  124,  306,  264,  265,
  416. X  266,  295,  264,  265,  302,  299,  300,  301,  274,  275,
  417. X  276,  277,  306,  245,  295,  245,  264,  265,  259,  260,
  418. X  323,  251,  252,  253,  152,  302,  318,  155,  263,  157,
  419. X  302,  290,  291,  292,  264,  263,  302,  296,  297,  259,
  420. X  260,  271,  299,  300,  301,  259,  260,  261,  278,  306,
  421. X  264,  265,  266,  278,  284,  263,  286,  287,  302,  265,
  422. X  256,  275,  302,  265,  263,  261,  266,  265,  259,  260,
  423. X  261,  245,  301,  264,  265,  266,  302,  183,  300,  306,
  424. X  318,  298,  306,  306,  275,  306,  318,  317,  302,  302,
  425. X  300,  287,  288,  289,  264,  302,   25,  293,  260,  302,
  426. X   -1,  302,  298,  299,  300,  301,   -1,  303,  304,  305,
  427. X  306,  302,  308,  309,  310,   -1,  302,  313,  314,  315,
  428. X  316,  302,   -1,   -1,   -1,  287,  288,  289,   -1,  325,
  429. X  326,  293,   -1,   -1,  330,   -1,  298,  299,  300,  301,
  430. X   -1,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
  431. X   -1,  313,  314,  315,  316,  256,   -1,  285,  259,  260,
  432. X  261,  262,   -1,  259,  260,  261,   -1,   -1,  264,  265,
  433. X  266,   -1,  300,  288,  289,  290,  291,  292,   -1,  275,
  434. X   -1,  296,  297,   -1,   -1,   -1,  287,  288,  289,   -1,
  435. X   -1,   -1,  293,   -1,  322,  323,   -1,  298,  299,  300,
  436. X  301,   -1,  303,  304,  305,  306,  302,  308,  309,  310,
  437. X  311,  312,  313,  314,  315,  316,  317,  318,  319,  320,
  438. X  321,  322,   -1,  324,   -1,   -1,  327,  328,  329,  256,
  439. X   -1,   -1,  259,  260,  261,  262,   -1,  259,  260,  261,
  440. X   -1,   -1,  264,  265,  266,  278,  279,  280,  281,  282,
  441. X  283,  284,  285,  275,   -1,   -1,   -1,   -1,   -1,   -1,
  442. X  287,  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,
  443. X   -1,  298,  299,  300,  301,   -1,  303,  304,  305,  306,
  444. X  302,  308,  309,  310,  311,  312,  313,  314,  315,  316,
  445. X  317,  318,  319,  320,  321,  322,   -1,  324,   -1,   -1,
  446. X  327,  328,  329,  256,   -1,   -1,  259,  260,  261,   -1,
  447. X   -1,  259,  260,  261,   -1,   -1,  264,  265,  266,   -1,
  448. X  267,  268,  269,  270,  271,  272,  273,  275,   -1,   -1,
  449. X   -1,   -1,   -1,   -1,  287,  288,  289,   -1,   -1,   -1,
  450. X  293,   -1,   -1,   -1,   -1,  298,  299,  300,  301,   -1,
  451. X  303,  304,  305,  306,  302,  308,  309,  310,  311,  312,
  452. X  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,
  453. X   -1,  324,   -1,   -1,  327,  328,  329,  256,   -1,   -1,
  454. X  259,  260,  261,   -1,   -1,  259,  260,  261,   -1,   -1,
  455. X  264,  265,  266,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  456. X   -1,  275,   -1,   -1,   -1,   -1,   -1,   -1,  287,  288,
  457. X  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,  298,
  458. X  299,  300,  301,   -1,  303,  304,  305,  306,  302,  308,
  459. X  309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
  460. X  319,  320,  321,  322,   -1,  324,   -1,   -1,  327,  328,
  461. X  329,  259,  260,  261,   -1,  263,  264,  265,  266,  267,
  462. X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  463. X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
  464. X  288,  289,  290,  291,  292,  293,   -1,  295,  296,  297,
  465. X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  466. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
  467. X  260,  261,   -1,  263,  264,  265,  266,  267,  268,  269,
  468. X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  469. X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
  470. X  290,  291,  292,  293,   -1,  295,  296,  297,  298,  299,
  471. X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
  472. X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
  473. X   -1,  263,  264,  265,  266,  267,  268,  269,  270,  271,
  474. X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  475. X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
  476. X  292,  293,   -1,  295,  296,  297,   -1,  299,  300,  301,
  477. X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
  478. X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,  263,
  479. X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  480. X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  481. X  284,  285,   -1,  287,  288,  289,  290,  291,  292,  293,
  482. X   -1,   -1,  296,  297,   -1,  299,  300,  301,  302,  303,
  483. X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
  484. X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
  485. X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
  486. X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  487. X   -1,  287,  288,  289,  290,  291,  292,  293,   -1,  295,
  488. X  296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
  489. X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
  490. X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,  267,
  491. X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  492. X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
  493. X  288,  289,  290,  291,  292,  293,   -1,   -1,  296,  297,
  494. X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  495. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
  496. X  260,  261,   -1,   -1,  264,  265,  266,  267,  268,  269,
  497. X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  498. X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
  499. X  290,  291,  292,  293,   -1,  295,  296,   -1,  298,  299,
  500. X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
  501. X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
  502. X   -1,   -1,  264,  265,  266,  267,  268,  269,  270,  271,
  503. X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  504. X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
  505. X  292,  293,   -1,  295,  296,  297,   -1,  299,  300,  301,
  506. X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
  507. X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,   -1,
  508. X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  509. X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  510. X  284,  285,   -1,  287,  288,  289,  290,  291,  292,  293,
  511. X   -1,  295,   -1,   -1,  298,  299,  300,  301,  302,  303,
  512. X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
  513. X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
  514. X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
  515. X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  516. X   -1,  287,  288,  289,  290,  291,  292,  293,   -1,  295,
  517. X   -1,   -1,  298,  299,  300,  301,  302,  303,  304,  305,
  518. X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
  519. X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,  267,
  520. X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  521. X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
  522. X  288,  289,  290,  291,  292,  293,   -1,  295,   -1,   -1,
  523. X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  524. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
  525. X  260,  261,   -1,   -1,  264,  265,  266,  267,  268,  269,
  526. X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  527. X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
  528. X  290,  291,  292,  293,   -1,  295,   -1,   -1,  298,  299,
  529. X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
  530. X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
  531. X   -1,   -1,  264,  265,  266,  267,  268,  269,  270,  271,
  532. X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  533. X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
  534. X  292,  293,   -1,  295,   -1,   -1,  298,  299,  300,  301,
  535. X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
  536. X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,   -1,
  537. X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  538. X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  539. X  284,  285,   -1,  287,  288,  289,  290,  291,  292,  293,
  540. X   -1,  295,   -1,   -1,  298,  299,  300,  301,  302,  303,
  541. X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
  542. X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
  543. X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
  544. X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  545. X   -1,  287,  288,  289,  290,  291,  292,  293,   -1,  295,
  546. X   -1,   -1,  298,  299,  300,  301,  302,  303,  304,  305,
  547. X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
  548. X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,  267,
  549. X  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  550. X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
  551. X  288,  289,  290,  291,  292,  293,   -1,   -1,  296,  297,
  552. X   -1,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  553. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
  554. X  260,  261,   -1,   -1,  264,  265,  266,  267,  268,  269,
  555. X  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
  556. X  280,  281,  282,  283,  284,  285,   -1,  287,  288,  289,
  557. X  290,  291,  292,  293,   -1,  295,  296,  297,  298,   -1,
  558. X   -1,   -1,  302,  303,  304,  305,   -1,   -1,  308,  309,
  559. X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
  560. X   -1,   -1,  264,  265,  266,  267,  268,  269,  270,  271,
  561. X  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
  562. X  282,  283,  284,  285,   -1,  287,  288,  289,  290,  291,
  563. X  292,  293,   -1,   -1,  296,  297,  298,   -1,   -1,   -1,
  564. X  302,  303,  304,  305,   -1,   -1,  308,  309,  310,   -1,
  565. X   -1,  313,  314,  315,  316,  259,  260,  261,   -1,   -1,
  566. X  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
  567. X  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,
  568. X  284,  285,   -1,  287,  288,  289,   -1,   -1,   -1,  293,
  569. X   -1,  295,   -1,   -1,  298,  299,  300,  301,  302,  303,
  570. X  304,  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,
  571. X  314,  315,  316,  259,  260,  261,   -1,   -1,  264,  265,
  572. X  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
  573. X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  574. X   -1,  287,  288,  289,   -1,   -1,   -1,  293,   -1,  295,
  575. X   -1,   -1,  298,  299,  300,  301,  302,  303,  304,  305,
  576. X  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,  315,
  577. X  316,  259,  260,  261,   -1,   -1,  264,  265,  266,   -1,
  578. X   -1,   -1,   -1,   -1,   -1,   -1,  274,  275,  276,  277,
  579. X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  287,
  580. X  288,  289,  290,  291,  292,  293,   -1,   -1,  296,  297,
  581. X   -1,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  582. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  259,
  583. X  260,  261,   -1,   -1,  264,  265,  266,   -1,   -1,   -1,
  584. X   -1,   -1,   -1,   -1,  274,  275,  276,  277,  278,  279,
  585. X  280,  281,  282,  283,  284,  285,   -1,  287,   -1,   -1,
  586. X   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,  298,  299,
  587. X  300,  301,  302,  303,  304,  305,  306,   -1,  308,  309,
  588. X  310,   -1,   -1,  313,  314,  315,  316,  259,  260,  261,
  589. X   -1,   -1,  264,  265,  266,   -1,   -1,   -1,   -1,   -1,
  590. X   -1,   -1,  274,  275,  276,  277,  278,  279,  280,  281,
  591. X  282,  283,  284,  285,   -1,  287,   -1,  259,  260,   -1,
  592. X   -1,  293,   -1,   -1,   -1,   -1,  298,  299,  300,  301,
  593. X  302,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
  594. X   -1,  313,  314,  315,  316,  287,  288,  289,   -1,   -1,
  595. X   -1,  293,   -1,   -1,   -1,   -1,  298,  299,  300,  301,
  596. X   -1,  303,  304,  305,  306,   -1,  308,  309,  310,   -1,
  597. X   -1,  313,  314,  315,  316,  260,   -1,   -1,  263,   -1,
  598. X   -1,   -1,  267,  268,  269,  270,  271,  272,  273,  274,
  599. X   -1,  276,  277,   -1,  279,  280,  281,  282,  283,  284,
  600. X  285,   -1,  287,  288,  289,  290,  291,  292,  293,  260,
  601. X   -1,  296,  297,   -1,  299,  300,  301,   -1,  303,  304,
  602. X  305,  306,   -1,  308,  309,  310,   -1,   -1,  313,  314,
  603. X  315,  316,   -1,   -1,   -1,   -1,  287,  288,  289,   -1,
  604. X   -1,   -1,  293,   -1,   -1,   -1,   -1,  298,  299,  300,
  605. X  301,   -1,  303,  304,  305,  306,   -1,  308,  309,  310,
  606. X   -1,   -1,  313,  314,  315,  316,  263,   -1,   -1,   -1,
  607. X  267,  268,  269,  270,  271,  272,  273,  274,   -1,  276,
  608. X  277,  278,  279,  280,  281,  282,  283,  284,  285,   -1,
  609. X  287,  288,  289,  290,  291,  292,  293,   -1,   -1,  296,
  610. X  297,   -1,  299,  300,  301,   -1,  303,  304,  305,  306,
  611. X   -1,  308,  309,  310,  265,   -1,  313,  314,  315,  316,
  612. X   -1,   -1,   -1,  274,   -1,  276,  277,  278,  279,  280,
  613. X  281,  282,  283,  284,  285,   -1,  287,  288,  289,  290,
  614. X  291,  292,  293,   -1,   -1,  296,  297,   -1,  299,  300,
  615. X  301,   -1,  303,  304,  305,  306,   -1,  308,  309,  310,
  616. X   -1,   -1,  313,  314,  315,  316,  259,  260,  261,   -1,
  617. X   -1,  264,  265,  266,   -1,   -1,   -1,   -1,   -1,   -1,
  618. X   -1,  274,  275,  276,  277,  278,  279,  280,  281,  282,
  619. X  283,  284,  285,   -1,  259,  260,  261,   -1,   -1,  264,
  620. X  265,  266,   -1,   -1,   -1,   -1,  259,  260,  261,  302,
  621. X  275,  264,  265,  266,  259,  260,  261,   -1,   -1,  264,
  622. X  265,  266,  275,   -1,   -1,   -1,  259,  260,  261,   -1,
  623. X  275,  264,  265,  266,  259,  260,  261,  302,   -1,  264,
  624. X  265,  266,  275,   -1,   -1,   -1,  259,  260,  261,  302,
  625. X  275,  264,  265,  266,  259,  260,  261,  302,   -1,  264,
  626. X  265,  266,  275,   -1,   -1,   -1,  259,  260,  261,  302,
  627. X  275,  264,  265,  266,  259,  260,  261,  302,   -1,  264,
  628. X  265,  266,  275,   -1,   -1,   -1,   -1,  265,   -1,  302,
  629. X  275,   -1,   -1,   -1,   -1,   -1,  274,  302,  276,  277,
  630. X  278,  279,  280,  281,  282,  283,  284,  285,   -1,  302,
  631. X   -1,   -1,   -1,   -1,  265,   -1,   -1,  302,   -1,   -1,
  632. X   -1,   -1,   -1,  274,  302,  276,  277,  278,  279,  280,
  633. X  281,  282,  283,  284,  285,   -1,   -1,   -1,   -1,   -1,
  634. X   -1,  265,  267,  268,  269,  270,  271,  272,  273,   -1,
  635. X  274,  302,  276,  277,  278,  279,  280,  281,  282,  283,
  636. X  284,  285,  267,  268,  269,  270,  271,  272,  273,  287,
  637. X  288,  289,   -1,  298,   -1,  293,   -1,  302,  302,   -1,
  638. X  298,  299,  300,  301,   -1,  303,  304,  305,  306,  307,
  639. X  308,  309,  310,  298,   -1,  313,  314,  315,  316,  287,
  640. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  641. X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  642. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
  643. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  644. X  298,  299,  300,  301,  302,  303,  304,  305,  306,   -1,
  645. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
  646. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  647. X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
  648. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
  649. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  650. X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
  651. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
  652. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  653. X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
  654. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
  655. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  656. X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
  657. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  287,
  658. X  288,  289,   -1,   -1,   -1,  293,   -1,   -1,   -1,   -1,
  659. X  298,  299,  300,  301,   -1,  303,  304,  305,  306,   -1,
  660. X  308,  309,  310,   -1,   -1,  313,  314,  315,  316,  274,
  661. X   -1,  276,  277,  278,  279,  280,  281,  282,  283,  284,
  662. X  285,  274,   -1,  276,  277,  278,  279,  280,  281,  282,
  663. X  283,  284,  285,   -1,   -1,   -1,  274,  302,  276,  277,
  664. X  278,  279,  280,  281,  282,  283,  284,  285,  274,  302,
  665. X  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
  666. X   -1,   -1,   -1,  274,  302,  276,  277,  278,  279,  280,
  667. X  281,  282,  283,  284,  285,  274,  302,  276,  277,  278,
  668. X  279,  280,  281,  282,  283,  284,  285,  259,  260,   -1,
  669. X   -1,  302,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  670. X  260,   -1,  274,  302,  276,  277,  278,  279,  280,  281,
  671. X  282,  283,  284,  285,  274,  260,  276,  277,  278,  279,
  672. X  280,  281,  282,  283,  284,  285,   -1,   -1,   -1,  274,
  673. X   -1,  276,  277,  278,  279,  280,  281,  282,  283,  284,
  674. X  285,  265,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  675. X  274,   -1,  276,  277,  278,  279,  280,  281,  282,  283,
  676. X  284,  285,  265,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  677. X   -1,  274,   -1,  276,  277,  278,  279,  280,  281,  282,
  678. X  283,  284,  285,  265,   -1,   -1,   -1,   -1,   -1,   -1,
  679. X   -1,   -1,  274,   -1,  276,  277,  278,  279,  280,  281,
  680. X  282,  283,  284,  285,  274,  275,  276,  277,  278,  279,
  681. X  280,  281,  282,  283,  284,  285,  274,   -1,  276,  277,
  682. X  278,  279,  280,  281,  282,  283,  284,  285,  277,  278,
  683. X  279,  280,  281,  282,  283,  284,  285,
  684. };
  685. #define YYFINAL 25
  686. #ifndef YYDEBUG
  687. #define YYDEBUG 0
  688. #endif
  689. #define YYMAXTOKEN 330
  690. #if YYDEBUG
  691. char *yyname[] = {
  692. "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  693. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  694. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  695. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  696. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  697. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  698. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UNEXPECTED","BAD_DECIMAL","NL",
  699. "SEMI_COLON","LBRACE","RBRACE","LBOX","RBOX","COMMA","IO_OUT","ASSIGN",
  700. "ADD_ASG","SUB_ASG","MUL_ASG","DIV_ASG","MOD_ASG","POW_ASG","QMARK","COLON",
  701. "OR","AND","IN","MATCH","EQ","NEQ","LT","LTE","GT","GTE","CAT","GETLINE","PLUS",
  702. "MINUS","MUL","DIV","MOD","NOT","UMINUS","IO_IN","PIPE","POW","INC_or_DEC",
  703. "DOLLAR","FIELD","LPAREN","RPAREN","DOUBLE","STRING_","RE","ID","D_ID",
  704. "FUNCT_ID","BUILTIN","LENGTH","PRINT","PRINTF","SPLIT","MATCH_FUNC","SUB",
  705. "GSUB","DO","WHILE","FOR","BREAK","CONTINUE","IF","ELSE","DELETE","BEGIN","END",
  706. "EXIT","NEXT","RETURN","FUNCTION",
  707. };
  708. char *yyrule[] = {
  709. "$accept : program",
  710. "program : program_block",
  711. "program : program program_block",
  712. "program_block : PA_block",
  713. "program_block : function_def",
  714. "program_block : outside_error block",
  715. "PA_block : block",
  716. "$$1 :",
  717. "PA_block : BEGIN $$1 block",
  718. "$$2 :",
  719. "PA_block : END $$2 block",
  720. "$$3 :",
  721. "PA_block : expr $$3 block_or_separator",
  722. "$$4 :",
  723. "$$5 :",
  724. "PA_block : expr COMMA $$4 expr $$5 block_or_separator",
  725. "block : LBRACE statement_list RBRACE",
  726. "block : LBRACE error RBRACE",
  727. "block_or_separator : block",
  728. "block_or_separator : separator",
  729. "statement_list : statement",
  730. "statement_list : statement_list statement",
  731. "statement : block",
  732. "statement : expr separator",
  733. "statement : separator",
  734. "statement : error separator",
  735. "statement : BREAK separator",
  736. "statement : CONTINUE separator",
  737. "statement : return_statement",
  738. "statement : NEXT separator",
  739. "separator : NL",
  740. "separator : SEMI_COLON",
  741. "expr : cat_expr",
  742. "expr : lvalue ASSIGN expr",
  743. "expr : lvalue ADD_ASG expr",
  744. "expr : lvalue SUB_ASG expr",
  745. "expr : lvalue MUL_ASG expr",
  746. "expr : lvalue DIV_ASG expr",
  747. "expr : lvalue MOD_ASG expr",
  748. "expr : lvalue POW_ASG expr",
  749. "expr : expr EQ expr",
  750. "expr : expr NEQ expr",
  751. "expr : expr LT expr",
  752. "expr : expr LTE expr",
  753. "expr : expr GT expr",
  754. "expr : expr GTE expr",
  755. "expr : expr MATCH expr",
  756. "$$6 :",
  757. "expr : expr OR $$6 expr",
  758. "$$7 :",
  759. "expr : expr AND $$7 expr",
  760. "$$8 :",
  761. "$$9 :",
  762. "expr : expr QMARK $$8 expr COLON $$9 expr",
  763. "cat_expr : p_expr",
  764. "cat_expr : cat_expr p_expr",
  765. "p_expr : DOUBLE",
  766. "p_expr : STRING_",
  767. "p_expr : ID",
  768. "p_expr : LPAREN expr RPAREN",
  769. "p_expr : RE",
  770. "p_expr : p_expr PLUS p_expr",
  771. "p_expr : p_expr MINUS p_expr",
  772. "p_expr : p_expr MUL p_expr",
  773. "p_expr : p_expr DIV p_expr",
  774. "p_expr : p_expr MOD p_expr",
  775. "p_expr : p_expr POW p_expr",
  776. "p_expr : NOT p_expr",
  777. "p_expr : PLUS p_expr",
  778. "p_expr : MINUS p_expr",
  779. "p_expr : builtin",
  780. "p_expr : ID INC_or_DEC",
  781. "p_expr : INC_or_DEC lvalue",
  782. "p_expr : field INC_or_DEC",
  783. "p_expr : INC_or_DEC field",
  784. "lvalue : ID",
  785. "arglist :",
  786. "arglist : args",
  787. "args : expr",
  788. "args : args COMMA expr",
  789. "builtin : BUILTIN mark LPAREN arglist RPAREN",
  790. "builtin : LENGTH",
  791. "mark :",
  792. "statement : print mark pr_args pr_direction separator",
  793. "print : PRINT",
  794. "print : PRINTF",
  795. "pr_args : arglist",
  796. "pr_args : LPAREN arg2 RPAREN",
  797. "pr_args : LPAREN RPAREN",
  798. "arg2 : expr COMMA expr",
  799. "arg2 : arg2 COMMA expr",
  800. "pr_direction :",
  801. "pr_direction : IO_OUT expr",
  802. "if_front : IF LPAREN expr RPAREN",
  803. "statement : if_front statement",
  804. "else : ELSE",
  805. "statement : if_front statement else statement",
  806. "do : DO",
  807. "statement : do statement WHILE LPAREN expr RPAREN separator",
  808. "while_front : WHILE LPAREN expr RPAREN",
  809. "statement : while_front statement",
  810. "statement : for1 for2 for3 statement",
  811. "for1 : FOR LPAREN SEMI_COLON",
  812. "for1 : FOR LPAREN expr SEMI_COLON",
  813. "for2 : SEMI_COLON",
  814. "for2 : expr SEMI_COLON",
  815. "for3 : RPAREN",
  816. "for3 : expr RPAREN",
  817. "expr : expr IN ID",
  818. "expr : LPAREN arg2 RPAREN IN ID",
  819. "lvalue : ID mark LBOX args RBOX",
  820. "p_expr : ID mark LBOX args RBOX",
  821. "p_expr : ID mark LBOX args RBOX INC_or_DEC",
  822. "statement : DELETE ID mark LBOX args RBOX separator",
  823. "array_loop_front : FOR LPAREN ID IN ID RPAREN",
  824. "statement : array_loop_front statement",
  825. "field : FIELD",
  826. "field : DOLLAR D_ID",
  827. "field : DOLLAR D_ID mark LBOX args RBOX",
  828. "field : DOLLAR p_expr",
  829. "field : LPAREN field RPAREN",
  830. "p_expr : field",
  831. "expr : field ASSIGN expr",
  832. "expr : field ADD_ASG expr",
  833. "expr : field SUB_ASG expr",
  834. "expr : field MUL_ASG expr",
  835. "expr : field DIV_ASG expr",
  836. "expr : field MOD_ASG expr",
  837. "expr : field POW_ASG expr",
  838. "p_expr : split_front split_back",
  839. "split_front : SPLIT LPAREN expr COMMA ID",
  840. "split_back : RPAREN",
  841. "split_back : COMMA expr RPAREN",
  842. "p_expr : MATCH_FUNC LPAREN expr COMMA re_arg RPAREN",
  843. "re_arg : expr",
  844. "statement : EXIT separator",
  845. "statement : EXIT expr separator",
  846. "return_statement : RETURN separator",
  847. "return_statement : RETURN expr separator",
  848. "p_expr : getline",
  849. "p_expr : getline fvalue",
  850. "p_expr : getline_file p_expr",
  851. "p_expr : p_expr PIPE GETLINE",
  852. "p_expr : p_expr PIPE GETLINE fvalue",
  853. "getline : GETLINE",
  854. "fvalue : lvalue",
  855. "fvalue : field",
  856. "getline_file : getline IO_IN",
  857. "getline_file : getline fvalue IO_IN",
  858. "p_expr : sub_or_gsub LPAREN re_arg COMMA expr sub_back",
  859. "sub_or_gsub : SUB",
  860. "sub_or_gsub : GSUB",
  861. "sub_back : RPAREN",
  862. "sub_back : COMMA fvalue RPAREN",
  863. "function_def : funct_start block",
  864. "funct_start : funct_head LPAREN f_arglist RPAREN",
  865. "funct_head : FUNCTION ID",
  866. "funct_head : FUNCTION FUNCT_ID",
  867. "f_arglist :",
  868. "f_arglist : f_args",
  869. "f_args : ID",
  870. "f_args : f_args COMMA ID",
  871. "outside_error : error",
  872. "p_expr : FUNCT_ID mark call_args",
  873. "call_args : LPAREN RPAREN",
  874. "call_args : ca_front ca_back",
  875. "ca_front : LPAREN",
  876. "ca_front : ca_front expr COMMA",
  877. "ca_front : ca_front ID COMMA",
  878. "ca_back : expr RPAREN",
  879. "ca_back : ID RPAREN",
  880. };
  881. #endif
  882. #ifdef  YYPURE
  883. #undef  YYGLOBAL
  884. #define YYLEX()    yylex(&yylval)
  885. #else
  886. #define YYLEX()    yylex()
  887. #endif
  888. X
  889. #define yyclearin (yychar=(-1))
  890. #define yyerrok (yyerrflag=0)
  891. #ifdef YYSTACKSIZE
  892. #ifndef YYMAXDEPTH
  893. #define YYMAXDEPTH YYSTACKSIZE
  894. #endif
  895. #else
  896. #ifdef YYMAXDEPTH
  897. #define YYSTACKSIZE YYMAXDEPTH
  898. #else
  899. #define YYSTACKSIZE 500
  900. #define YYMAXDEPTH 500
  901. #endif
  902. #endif
  903. int yydebug;
  904. #ifndef  YYPURE
  905. YYSTYPE yylval;
  906. #endif
  907. X
  908. #ifdef  YYGLOBAL
  909. int yynerrs;
  910. int yyerrflag;
  911. int yychar;
  912. short *yyssp;
  913. YYSTYPE *yyvsp;
  914. YYSTYPE yyval;
  915. short yyss[YYSTACKSIZE];
  916. YYSTYPE yyvs[YYSTACKSIZE];
  917. #endif
  918. #define yystacksize YYSTACKSIZE
  919. #line 1066 "parse.y"
  920. X
  921. /* resize the code for a user function */
  922. X
  923. static void  resize_fblock( fbp, code_ptr )
  924. X  FBLOCK *fbp ;
  925. X  INST *code_ptr ;
  926. { int size ;
  927. X
  928. X  code1(_RET0) ; /* make sure there is always a return statement */
  929. X
  930. #if !SM_DOS
  931. X  if ( dump_code )  
  932. X  { code1(_HALT) ; /*stops da() */
  933. X    add_to_fdump_list(fbp) ;
  934. X  }
  935. #endif
  936. X
  937. X  if ( (size = code_ptr - fbp->code) > PAGE_SZ-1 )
  938. X        overflow("function code size", PAGE_SZ ) ;
  939. X
  940. X  /* resize the code */
  941. X  fbp->code = (INST*) zrealloc(fbp->code, PAGE_SZ*sizeof(INST),
  942. X                       size * sizeof(INST) ) ;
  943. X
  944. }
  945. X
  946. X
  947. /* convert FE_PUSHA  to  FE_PUSHI
  948. X   or F_PUSH to F_PUSHI
  949. */
  950. X
  951. static void  field_A2I()
  952. { CELL *cp ;
  953. X
  954. X  if ( code_ptr[-1].op == FE_PUSHA &&
  955. X       code_ptr[-1].ptr == (PTR) 0)
  956. X  /* On most architectures, the two tests are the same; a good
  957. X     compiler might eliminate one.  On LM_DOS, and possibly other
  958. X     segmented architectures, they are not */
  959. X  { code_ptr[-1].op = FE_PUSHI ; }
  960. X  else
  961. X  {
  962. X    cp = (CELL *) code_ptr[-1].ptr ;
  963. X
  964. X    if ( cp == field  ||
  965. X
  966. #if  LM_DOS
  967. X     SAMESEG(cp,field) &&
  968. #endif
  969. X         cp > NF && cp <= LAST_PFIELD )
  970. X    {
  971. X         code_ptr[-2].op = _PUSHI  ;
  972. X    }
  973. X    else if ( cp == NF )
  974. X    { code_ptr[-2].op = NF_PUSHI ; code_ptr-- ; }
  975. X
  976. X    else
  977. X    { 
  978. X      code_ptr[-2].op = F_PUSHI ;
  979. X      code_ptr -> op = field_addr_to_index( code_ptr[-1].ptr ) ;
  980. X      code_ptr++ ;
  981. X    }
  982. X  }
  983. }
  984. X
  985. /* we've seen an ID in a context where it should be a VAR,
  986. X   check that's consistent with previous usage */
  987. X
  988. static void check_var( p )
  989. X  register SYMTAB *p ;
  990. {
  991. X      switch(p->type)
  992. X      {
  993. X        case ST_NONE : /* new id */
  994. X            p->type = ST_VAR ;
  995. X            p->stval.cp = new_CELL() ;
  996. X            p->stval.cp->type = C_NOINIT ;
  997. X            break ;
  998. X
  999. X        case ST_LOCAL_NONE :
  1000. X            p->type = ST_LOCAL_VAR ;
  1001. X            active_funct->typev[p->offset] = ST_LOCAL_VAR ;
  1002. X            break ;
  1003. X
  1004. X        case ST_VAR :
  1005. X        case ST_LOCAL_VAR :  break ;
  1006. X
  1007. X        default :
  1008. X            type_error(p) ;
  1009. X            break ;
  1010. X      }
  1011. }
  1012. X
  1013. /* we've seen an ID in a context where it should be an ARRAY,
  1014. X   check that's consistent with previous usage */
  1015. static  void  check_array(p)
  1016. X  register SYMTAB *p ;
  1017. {
  1018. X      switch(p->type)
  1019. X      {
  1020. X        case ST_NONE :  /* a new array */
  1021. X            p->type = ST_ARRAY ;
  1022. X            p->stval.array = new_ARRAY() ;
  1023. X            break ;
  1024. X
  1025. X        case  ST_ARRAY :
  1026. X        case  ST_LOCAL_ARRAY :
  1027. X            break ;
  1028. X
  1029. X        case  ST_LOCAL_NONE  :
  1030. X            p->type = ST_LOCAL_ARRAY ;
  1031. X            active_funct->typev[p->offset] = ST_LOCAL_ARRAY ;
  1032. X            break ;
  1033. X
  1034. X        default : type_error(p) ; break ;
  1035. X      }
  1036. }
  1037. X
  1038. static void code_array(p)
  1039. X  register SYMTAB *p ;
  1040. { if ( is_local(p) )
  1041. X  { code1(LA_PUSHA) ; code1(p->offset) ; }
  1042. X  else  code2(A_PUSHA, p->stval.array) ;
  1043. }
  1044. X
  1045. X
  1046. static  int  current_offset()
  1047. {
  1048. X  switch( scope )
  1049. X  { 
  1050. X    case  SCOPE_MAIN :  return code_ptr - main_start ;
  1051. X    case  SCOPE_BEGIN :  return code_ptr - begin_code.start ;
  1052. X    case  SCOPE_END   :  return code_ptr - end_code.start ;
  1053. X    case  SCOPE_FUNCT :  return code_ptr - active_funct->code ;
  1054. X  }
  1055. X  /* can't get here */
  1056. X  return 0 ;
  1057. }
  1058. X
  1059. /* we've seen an ID as an argument to a user defined function */
  1060. X
  1061. static void  code_call_id( p, ip )
  1062. X  register CA_REC *p ;
  1063. X  register SYMTAB *ip ;
  1064. { static CELL dummy ;
  1065. X
  1066. X  switch( ip->type )
  1067. X  {
  1068. X    case  ST_VAR  :
  1069. X            p->type = CA_EXPR ;
  1070. X            code2(_PUSHI, ip->stval.cp) ;
  1071. X            break ;
  1072. X
  1073. X    case  ST_LOCAL_VAR  :
  1074. X            p->type = CA_EXPR ;
  1075. X            code1(L_PUSHI) ;
  1076. X            code1(ip->offset) ;
  1077. X            break ;
  1078. X
  1079. X    case  ST_ARRAY  :
  1080. X            p->type = CA_ARRAY ;
  1081. X            code2(A_PUSHA, ip->stval.array) ;
  1082. X            break ;
  1083. X
  1084. X    case  ST_LOCAL_ARRAY :
  1085. X            p->type = CA_ARRAY ;
  1086. X            code1(LA_PUSHA) ;
  1087. X            code1(ip->offset) ;
  1088. X            break ;
  1089. X
  1090. X    /* not enough info to code it now; it will have to
  1091. X       be patched later */
  1092. X
  1093. X    case  ST_NONE :
  1094. X            p->type = ST_NONE ;
  1095. X            p->call_offset = current_offset() ;
  1096. X            p->sym_p = ip ;
  1097. X            code2(_PUSHI, &dummy) ;
  1098. X            break ;
  1099. X
  1100. X    case  ST_LOCAL_NONE :
  1101. X            p->type = ST_LOCAL_NONE ;
  1102. X            p->call_offset = current_offset() ;
  1103. X            p->type_p = & active_funct->typev[ip->offset] ;
  1104. X            code1(L_PUSHI) ; 
  1105. X            code1(ip->offset) ;
  1106. X            break ;
  1107. X
  1108. X  
  1109. #ifdef   DEBUG
  1110. X    default :
  1111. X            bozo("code_call_id") ;
  1112. #endif
  1113. X
  1114. X  }
  1115. }
  1116. X
  1117. /* an RE by itself was coded as _MATCH0 , change to
  1118. X   push as an expression */
  1119. X
  1120. static void RE_as_arg()
  1121. { CELL *cp = ZMALLOC(CELL) ;
  1122. X
  1123. X  code_ptr -= 2 ;
  1124. X  cp->type = C_RE ;
  1125. X  cp->ptr = code_ptr[1].ptr ;
  1126. X  code2(_PUSHC, cp) ;
  1127. }
  1128. X
  1129. X
  1130. int parse()
  1131. { int yy = yyparse() ;
  1132. X
  1133. #if  YYBYACC
  1134. X  extern struct yacc_mem *yacc_memp ;
  1135. X
  1136. X  yacc_memp++  ; /* puts parser tables in mem pool */
  1137. #endif
  1138. X
  1139. X  if ( resolve_list )  resolve_fcalls() ;
  1140. X  return yy ;
  1141. }
  1142. X
  1143. #line 1349 "y.tab.c"
  1144. #define YYABORT goto yyabort
  1145. #define YYACCEPT goto yyaccept
  1146. #define YYERROR goto yyerrlab
  1147. int
  1148. yyparse()
  1149. {
  1150. X    register int yyn, yystate;
  1151. X    int yym ;
  1152. #ifdef  YYPURE
  1153. X    YYSTYPE yylval ;
  1154. #endif
  1155. X
  1156. #ifndef  YYGLOBAL
  1157. X    int yynerrs;
  1158. X    int yyerrflag;
  1159. X    int yychar;
  1160. X    register short *yyssp;
  1161. X    register YYSTYPE *yyvsp;
  1162. X    YYSTYPE yyval;
  1163. X    short yyss[YYSTACKSIZE];
  1164. X    YYSTYPE yyvs[YYSTACKSIZE];
  1165. #endif
  1166. #if YYDEBUG
  1167. X    register char *yys;
  1168. X    extern char *getenv();
  1169. X
  1170. X    if (yys = getenv("YYDEBUG"))
  1171. X    {
  1172. X        yyn = *yys;
  1173. X        if (yyn >= '0' && yyn <= '9')
  1174. X            yydebug = yyn - '0';
  1175. X    }
  1176. #endif
  1177. X
  1178. X    yynerrs = 0;
  1179. X    yyerrflag = 0;
  1180. X    yychar = (-1);
  1181. X
  1182. X    yyssp = yyss;
  1183. X    yyvsp = yyvs;
  1184. X    *yyssp = yystate = 0;
  1185. X
  1186. yyloop:
  1187. X    if (yyn = yydefred[yystate]) goto yyreduce;
  1188. X    if (yychar < 0)
  1189. X    {
  1190. X        if ((yychar = YYLEX()) < 0) yychar = 0;
  1191. #if YYDEBUG
  1192. X        if (yydebug)
  1193. X        {
  1194. X            yys = 0;
  1195. X            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1196. X            if (!yys) yys = "illegal-symbol";
  1197. X            printf("yydebug: state %d, reading %d (%s)\n", yystate,
  1198. X                    yychar, yys);
  1199. X        }
  1200. #endif
  1201. X    }
  1202. X    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
  1203. X            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  1204. X    {
  1205. #if YYDEBUG
  1206. X        if (yydebug)
  1207. X            printf("yydebug: state %d, shifting to state %d\n",
  1208. X                    yystate, yytable[yyn]);
  1209. #endif
  1210. X        if (yyssp >= yyss + yystacksize - 1)
  1211. X        {
  1212. X            goto yyoverflow;
  1213. X        }
  1214. X        *++yyssp = yystate = yytable[yyn];
  1215. X        *++yyvsp = yylval;
  1216. X        yychar = (-1);
  1217. X        if (yyerrflag > 0)  --yyerrflag;
  1218. X        goto yyloop;
  1219. X    }
  1220. X    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
  1221. X            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  1222. X    {
  1223. X        yyn = yytable[yyn];
  1224. X        goto yyreduce;
  1225. X    }
  1226. X    if (yyerrflag) goto yyinrecovery;
  1227. #ifdef lint
  1228. X    goto yynewerror;
  1229. #endif
  1230. yynewerror:
  1231. X    yyerror("syntax error");
  1232. #ifdef lint
  1233. X    goto yyerrlab;
  1234. #endif
  1235. yyerrlab:
  1236. X    ++yynerrs;
  1237. yyinrecovery:
  1238. X    if (yyerrflag < 3)
  1239. X    {
  1240. X        yyerrflag = 3;
  1241. X        for (;;)
  1242. X        {
  1243. X            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
  1244. X                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
  1245. X            {
  1246. #if YYDEBUG
  1247. X                if (yydebug)
  1248. X                    printf("yydebug: state %d, error recovery shifting\
  1249. X to state %d\n", *yyssp, yytable[yyn]);
  1250. #endif
  1251. X                if (yyssp >= yyss + yystacksize - 1)
  1252. X                {
  1253. X                    goto yyoverflow;
  1254. X                }
  1255. X                *++yyssp = yystate = yytable[yyn];
  1256. X                *++yyvsp = yylval;
  1257. X                goto yyloop;
  1258. X            }
  1259. X            else
  1260. X            {
  1261. #if YYDEBUG
  1262. X                if (yydebug)
  1263. X                    printf("yydebug: error recovery discarding state %d\n",
  1264. X                            *yyssp);
  1265. #endif
  1266. X                if (yyssp <= yyss) goto yyabort;
  1267. X                --yyssp;
  1268. X                --yyvsp;
  1269. X            }
  1270. X        }
  1271. X    }
  1272. X    else
  1273. X    {
  1274. X        if (yychar == 0) goto yyabort;
  1275. #if YYDEBUG
  1276. X        if (yydebug)
  1277. X        {
  1278. X            yys = 0;
  1279. X            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1280. X            if (!yys) yys = "illegal-symbol";
  1281. X            printf("yydebug: state %d, error recovery discards token %d (%s)\n",
  1282. X                    yystate, yychar, yys);
  1283. X        }
  1284. #endif
  1285. X        yychar = (-1);
  1286. X        goto yyloop;
  1287. X    }
  1288. yyreduce:
  1289. #if YYDEBUG
  1290. X    if (yydebug)
  1291. X        printf("yydebug: state %d, reducing by rule %d (%s)\n",
  1292. X                yystate, yyn, yyrule[yyn]);
  1293. #endif
  1294. X    yym = yylen[yyn];
  1295. X    yyval = yyvsp[1-yym];
  1296. X    switch (yyn)
  1297. X    {
  1298. case 6:
  1299. #line 160 "parse.y"
  1300. { /* this do nothing action removes a vacuous warning
  1301. X                  from Bison */
  1302. X             }
  1303. break;
  1304. case 7:
  1305. #line 165 "parse.y"
  1306. X          be_expand(&begin_code) ;
  1307. X                  scope = SCOPE_BEGIN ;
  1308. X                }
  1309. break;
  1310. case 8:
  1311. #line 171 "parse.y"
  1312. { be_shrink(&begin_code) ;
  1313. X                  scope = SCOPE_MAIN ;
  1314. X                }
  1315. break;
  1316. case 9:
  1317. #line 176 "parse.y"
  1318. X          be_expand(&end_code) ;
  1319. X                  scope = SCOPE_END ;
  1320. X                }
  1321. break;
  1322. case 10:
  1323. #line 182 "parse.y"
  1324. { be_shrink(&end_code) ;
  1325. X                  scope = SCOPE_MAIN ;
  1326. X                }
  1327. break;
  1328. case 11:
  1329. #line 187 "parse.y"
  1330. { code_jmp(_JZ, (INST*)0) ; }
  1331. break;
  1332. case 12:
  1333. #line 190 "parse.y"
  1334. { patch_jmp( code_ptr ) ; }
  1335. break;
  1336. case 13:
  1337. #line 194 "parse.y"
  1338. { code_push(yyvsp[-1].start, code_ptr - yyvsp[-1].start) ;
  1339. X               code_ptr = yyvsp[-1].start ;
  1340. X               code1(_RANGE) ; code1(1) ;
  1341. X               code_ptr += 3 ;
  1342. X               code_ptr += code_pop(code_ptr) ;
  1343. X               code1(_STOP) ;
  1344. X               yyvsp[-1].start[2].op = code_ptr - (yyvsp[-1].start+1) ;
  1345. X             }
  1346. break;
  1347. case 14:
  1348. #line 203 "parse.y"
  1349. { code1(_STOP) ; }
  1350. break;
  1351. case 15:
  1352. #line 206 "parse.y"
  1353. { yyvsp[-5].start[3].op = yyvsp[0].start - (yyvsp[-5].start+1) ;
  1354. X               yyvsp[-5].start[4].op = code_ptr - (yyvsp[-5].start+1) ;
  1355. X             }
  1356. break;
  1357. case 16:
  1358. #line 214 "parse.y"
  1359. { yyval.start = yyvsp[-1].start ; }
  1360. break;
  1361. case 17:
  1362. #line 216 "parse.y"
  1363. { yyval.start = code_ptr ; /* does nothing won't be executed */
  1364. X              print_flag = getline_flag = paren_cnt = 0 ;
  1365. X              yyerrok ; }
  1366. break;
  1367. case 19:
  1368. #line 223 "parse.y"
  1369. { yyval.start = code_ptr ;
  1370. X                       code1(_PUSHINT) ; code1(0) ;
  1371. X                       code2(_PRINT, bi_print) ;
  1372. X                     }
  1373. break;
  1374. case 23:
  1375. #line 235 "parse.y"
  1376. { code1(_POP) ; }
  1377. break;
  1378. case 24:
  1379. #line 237 "parse.y"
  1380. { yyval.start = code_ptr ; }
  1381. break;
  1382. case 25:
  1383. #line 239 "parse.y"
  1384. { yyval.start = code_ptr ;
  1385. X                print_flag = getline_flag = 0 ;
  1386. X                paren_cnt = 0 ;
  1387. X                yyerrok ;
  1388. X              }
  1389. break;
  1390. case 26:
  1391. #line 245 "parse.y"
  1392. { yyval.start = code_ptr ; BC_insert('B', code_ptr+1) ;
  1393. X               code2(_JMP, 0) /* don't use code_jmp ! */ ; }
  1394. break;
  1395. case 27:
  1396. #line 248 "parse.y"
  1397. { yyval.start = code_ptr ; BC_insert('C', code_ptr+1) ;
  1398. X               code2(_JMP, 0) ; }
  1399. break;
  1400. case 28:
  1401. #line 251 "parse.y"
  1402. { if ( scope != SCOPE_FUNCT )
  1403. X                     compile_error("return outside function body") ;
  1404. X             }
  1405. break;
  1406. case 29:
  1407. #line 255 "parse.y"
  1408. { if ( scope != SCOPE_MAIN )
  1409. X                   compile_error( "improper use of next" ) ;
  1410. X                yyval.start = code_ptr ; 
  1411. X                code1(_NEXT) ;
  1412. X              }
  1413. break;
  1414. case 33:
  1415. #line 266 "parse.y"
  1416. { code1(_ASSIGN) ; }
  1417. break;
  1418. case 34:
  1419. #line 267 "parse.y"
  1420. { code1(_ADD_ASG) ; }
  1421. break;
  1422. case 35:
  1423. #line 268 "parse.y"
  1424. { code1(_SUB_ASG) ; }
  1425. break;
  1426. case 36:
  1427. #line 269 "parse.y"
  1428. { code1(_MUL_ASG) ; }
  1429. break;
  1430. case 37:
  1431. #line 270 "parse.y"
  1432. { code1(_DIV_ASG) ; }
  1433. break;
  1434. case 38:
  1435. #line 271 "parse.y"
  1436. { code1(_MOD_ASG) ; }
  1437. break;
  1438. case 39:
  1439. #line 272 "parse.y"
  1440. { code1(_POW_ASG) ; }
  1441. break;
  1442. case 40:
  1443. #line 273 "parse.y"
  1444. { code1(_EQ) ; }
  1445. break;
  1446. case 41:
  1447. #line 274 "parse.y"
  1448. { code1(_NEQ) ; }
  1449. break;
  1450. case 42:
  1451. #line 275 "parse.y"
  1452. { code1(_LT) ; }
  1453. break;
  1454. case 43:
  1455. #line 276 "parse.y"
  1456. { code1(_LTE) ; }
  1457. break;
  1458. case 44:
  1459. #line 277 "parse.y"
  1460. { code1(_GT) ; }
  1461. break;
  1462. case 45:
  1463. #line 278 "parse.y"
  1464. { code1(_GTE) ; }
  1465. break;
  1466. case 46:
  1467. #line 281 "parse.y"
  1468. {
  1469. X            if ( yyvsp[0].start == code_ptr - 2 )
  1470. X            {
  1471. X               if ( yyvsp[0].start->op == _MATCH0 )  yyvsp[0].start->op = _MATCH1 ;
  1472. X
  1473. X               else /* check for string */
  1474. X               if ( yyvsp[0].start->op == _PUSHS )
  1475. X               { CELL *cp = ZMALLOC(CELL) ;
  1476. X
  1477. X                 cp->type = C_STRING ; 
  1478. X                 cp->ptr = yyvsp[0].start[1].ptr ;
  1479. X                 cast_to_RE(cp) ;
  1480. X                 code_ptr -= 2 ;
  1481. X                 code2(_MATCH1, cp->ptr) ;
  1482. X                 ZFREE(cp) ;
  1483. X               }
  1484. X               else  code1(_MATCH2) ;
  1485. X            }
  1486. X            else code1(_MATCH2) ;
  1487. X
  1488. X            if ( !yyvsp[-1].ival ) code1(_NOT) ;
  1489. X          }
  1490. break;
  1491. case 47:
  1492. #line 306 "parse.y"
  1493. { code1(_DUP) ;
  1494. X                code_jmp(_JNZ, (INST*)0) ;
  1495. X                code1(_POP) ;
  1496. X              }
  1497. break;
  1498. case 48:
  1499. #line 311 "parse.y"
  1500. { patch_jmp(code_ptr) ; code1(_TEST) ; }
  1501. break;
  1502. case 49:
  1503. #line 314 "parse.y"
  1504. { code1(_DUP) ; code_jmp(_JZ, (INST*)0) ;
  1505. X                code1(_POP) ; }
  1506. break;
  1507. case 50:
  1508. #line 317 "parse.y"
  1509. { patch_jmp(code_ptr) ; code1(_TEST) ; }
  1510. break;
  1511. case 51:
  1512. #line 319 "parse.y"
  1513. { code_jmp(_JZ, (INST*)0) ; }
  1514. break;
  1515. case 52:
  1516. #line 320 "parse.y"
  1517. { code_jmp(_JMP, (INST*)0) ; }
  1518. SHAR_EOF
  1519. true || echo 'restore of Xparse.c failed'
  1520. fi
  1521. echo 'End of  part 3'
  1522. echo 'File Xparse.c is continued in part 4'
  1523. echo 4 > _shar_seq_.tmp
  1524. exit 0
  1525.  
  1526. exit 0 # Just in case...
  1527.